package com.stefanini.pe.bbva.bp.in.dao.impl;

import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.stefanini.pe.bbva.bp.in.dao.iface.CalculadoraDAOIface;

@Repository
public class CalculadoraDAOImpl extends SqlMapClientDaoSupport implements
		CalculadoraDAOIface {
	
	@Autowired
	public CalculadoraDAOImpl(SqlMapClient sqlMapClient) {
		setSqlMapClient(sqlMapClient);
	}
	
	@SuppressWarnings("unchecked")
	public List<HashMap> listarCalculoPropuestaRebalanceo(String categoriaActivo,
			String codProducto,String codSubProducto, String monto, String codCliente) throws Exception{
		HashMap map=new HashMap();
		categoriaActivo=categoriaActivo.replaceAll("0", "");
		
		map.put("in_idcategoriaactivo", categoriaActivo);
		map.put("in_codproducto", codProducto);
		map.put("in_codsubproducto", codSubProducto);
		map.put("in_monto", monto);
		map.put("in_codcliente", codCliente);
		
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.calculoPropuestaRebalanceo",map);
		return (List)map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List<HashMap> listarDetalleDistribucion(String codCliente,
			String codContrato,String codRegistro) throws Exception{
		HashMap map=new HashMap();
		map.put("in_codcliente", codCliente);
		map.put("in_codcontrato", codContrato);
		map.put("in_codregistro", codRegistro);
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.listaDetalleDistribucion",map);
		return (List)map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List<HashMap> listarDistribucionCategoriaAct(String codCliente, String codContrato, String codRegistro) throws Exception{
		HashMap map=new HashMap();
		map.put("in_codcliente", codCliente);
		map.put("in_codcontrato", codContrato);
		map.put("in_codregistro", codRegistro);
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.distribucionCatAct",map);
		return (List)map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List<HashMap> listarDistribucionCategoriaActNC(String idnocliente, 
			String idcatactivo, String codproducto, String codsubproducto,
			String montousd, String montopen, String montoeur) throws Exception{
		HashMap map=new HashMap();

		idcatactivo=idcatactivo.replaceAll("0", "");
		
		map.put("in_idnocliente", idnocliente);
		map.put("in_idcategoriaactivo", idcatactivo);
		map.put("in_codproducto", codproducto);
		map.put("in_codsubproducto", codsubproducto);
		map.put("in_monto_usd", montousd);
		map.put("in_monto_pen", montopen);
		map.put("in_monto_eur", montoeur);
		
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.distribucionCatActNC",map);
		return (List)map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List<HashMap> listarDetalleDistribucionNC(String codCliente,
			String codRegistro) throws Exception{
		HashMap map=new HashMap();
		map.put("in_codcliente", codCliente);
		map.put("in_codregistro", codRegistro);
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.listaDetalleDistribucionNC",map);
		return (List)map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public HashMap insertarRebalanceoTemporal(HashMap parametros) throws Exception{
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.insertarRebalanceoTemporal",parametros);
		return parametros;
	}
	
	@SuppressWarnings("unchecked")
	public HashMap insertarRebalanceoTemporalNC(HashMap parametros) throws Exception{
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.insertarRebalanceoTemporalNC",parametros);
		return parametros;
	}
	
	@SuppressWarnings("unchecked")
	public List listaFondosMutuos() throws Exception{
		HashMap parametros=new HashMap();
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.listaFondosMutuos",parametros);
		return (List)parametros.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List listaTituloFMCategoria() throws Exception{
		HashMap parametros=new HashMap();
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.listaFMCategoria",parametros);
		return (List)parametros.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List listaTituloFMMonedas() throws Exception{
		HashMap parametros=new HashMap();
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.listaFMMonedas",parametros);
		return (List)parametros.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List listaCalculoSimulador(HashMap parametros) throws Exception{
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.listaCalculoSimulador",parametros);
		return (List)parametros.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public HashMap listaCalculoSimuladorRentabilidad(HashMap parametros) throws Exception{
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.listaCalSimuladorRent",parametros);
		return parametros;
	}
	
	@SuppressWarnings("unchecked")
	public List retornaDesviacionPropuesta(String categoriaActivos,String valores) throws Exception{
		HashMap parametros=new HashMap();
		parametros.put("in_idcategoriaactivo", categoriaActivos);
		parametros.put("in_valor", valores);
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.retornaDesviacionPropuesta",parametros);
		return (List)parametros.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public HashMap insertarComposicionFM(HashMap parametros) throws Exception{
		getSqlMapClientTemplate().queryForList("BP_CALCULADORA_SqlMap.insertarComposicionFM",parametros);
		return parametros;
	}
}
